#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QWidget>
#include <QTimer>
#include <QFont>
#include <QColor>
#include <QPushButton>
#include <QLineEdit>
#include <QSpinBox>
#include <QGroupBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
#include <QMessageBox>
#include "cpumonitor.h"
#include "linechartwidget.h"
#include "sshmonitor.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);

private slots:
    void onCPUDataUpdated(CPUData data);
    void onSSHDataUpdated(const CPUData &data);
    void onSSHConnectionStatusChanged(bool connected);
    void onSSHErrorOccurred(const QString &error);

    // SSH远程监控控制槽函数
    void connectToSSH();
    void disconnectFromSSH();

    // 数据源切换槽函数
    void onToggleDataSelected();

private:
    void setupUI();
    void setupRemoteUI();
    void setupDataSourceUI();
    void updateLabels(CPUData data);
    void updateSSHLabels(const CPUData &data);


    // CPU监控器
    CPUMonitor *cpuMonitor;

    // SSH监控器
    SSHMonitor *sshMonitor;

    // 自定义图表控件
    ChartWidget *chartWidget;

    // 本地监控标签
    QLabel *totalLabel;
    QLabel *userLabel;
    QLabel *systemLabel;
    QLabel *idleLabel;

    // SSH远程监控UI组件
    QGroupBox *remoteGroupBox;
    QLineEdit *hostEdit;
    QLineEdit *userEdit;
    QPushButton *connectButton;
    QPushButton *disconnectButton;
    QLabel *remoteTotalLabel;
    QLabel *remoteUserLabel;
    QLabel *remoteSystemLabel;
    QLabel *remoteIdleLabel;
    QLabel *connectionStatusLabel;

    // 数据源切换UI组件
    QGroupBox *dataSourceGroupBox;
    QPushButton *toggleDataBtn;

    // 数据源控制
    bool showLocalData;
};

#endif // MAINWINDOW_H
